% 目标函数：总造价
cost_function = @(x) 50*x(1)*x(2) + 180*x(1)*x(3) + 180*x(2)*x(3);

% 非线性约束函数 - 修正了分隔符问题
nonlcon = @(x) deal( ...
    [x(1)^2 + x(2)^2 + x(3)^2 - 400], ...  % 不等式约束：L²+W²+H² ≤ 400
    [x(1)*x(2)*x(3) - 600] ...             % 等式约束：LWH = 600
);

% 线性不等式约束：1.5W ≤ L ≤ 3W 转换为矩阵形式
A = [1, -1.5, 0;  % L - 1.5W ≥ 0  →  -L + 1.5W ≤ 0
     -1, 3, 0];   % L - 3W ≤ 0
b = [0; 0];

% 变量下界和上界
lb = [1.5*2.8, 2.8, 2.8];  % 基于 H ≥ 2.8 和 L ≥ 1.5W
ub = [3*15, 15, 3.8];      % 基于 W ≤ L/1.5 和 H ≤ 3.8，假设 L ≤ 45

% 初始猜测值（满足约束条件）
x0 = [15, 10, 4];  % L=15, W=10, H=4（初始值需满足LWH=600）

% 设置优化选项
options = optimoptions('fmincon', 'Display', 'iter', 'Algorithm', 'sqp');

% 求解优化问题
[x_opt, cost_opt] = fmincon(cost_function, x0, A, b, [], [], lb, ub, nonlcon, options);

% 输出结果
fprintf('最优解：\n');
fprintf('长度 L = %.4f 米\n', x_opt(1));
fprintf('宽度 W = %.4f 米\n', x_opt(2));
fprintf('高度 H = %.4f 米\n', x_opt(3));
fprintf('总造价 = %.2f 元\n', cost_opt);
fprintf('\n约束条件验证：\n');
fprintf('蓄水量 = %.4f 立方米 (应等于600)\n', x_opt(1)*x_opt(2)*x_opt(3));
fprintf('长宽高平方和 = %.4f (应≤400)\n', x_opt(1)^2 + x_opt(2)^2 + x_opt(3)^2);
fprintf('长度/宽度 = %.4f (应在1.5~3之间)\n', x_opt(1)/x_opt(2));
fprintf('高度 = %.4f 米 (应在2.8~3.8米之间)\n', x_opt(3));